<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/asm/irqflags.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/asm/irqflags.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X1g4Nl9JUlFGTEFHU19IX18w"><span class="b">_X86_IRQFLAGS_H_</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X1g4Nl9JUlFGTEFHU19IX18w"><span class="b">_X86_IRQFLAGS_H_</span></a>
<a name="3" /><span class="True">       3:</span> 
<a name="4" /><span class="True">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">processor</span><span class="f">-</span><span class="b">flags</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="True">       5:</span> 
<a name="6" /><span class="True">       6:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">__ASSEMBLY__</span>
<a name="7" /><span class="True">       7:</span> <span class="k">/*</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> * Interrupt control:</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> */</span>
<a name="10" /><span class="True">      10:</span> 
<a name="11" /><span class="True">      11:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">native_save_fl</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="12" /><span class="True">      12:</span> <span class="f">{</span>
<a name="13" /><span class="True">      13:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">;</span>
<a name="14" /><span class="True">      14:</span> 
<a name="15" /><span class="True">      15:</span>     <span class="k">/*</span>
<a name="16" /><span class="True">      16:</span> <span class="k">     * &quot;=rm&quot; is safe here, because &quot;pop&quot; adjusts the stack before</span>
<a name="17" /><span class="True">      17:</span> <span class="k">     * it evaluates its effective address -- this is part of the</span>
<a name="18" /><span class="True">      18:</span> <span class="k">     * documented behavior of the &quot;pop&quot; instruction.</span>
<a name="19" /><span class="True">      19:</span> <span class="k">     */</span>
<a name="20" /><span class="True">      20:</span>     <span class="m">asm</span> <span class="m">volatile</span><span class="f">(</span><span class="e">&quot;# __raw_save_flags\n\t&quot;</span>
<a name="21" /><span class="True">      21:</span>              <span class="e">&quot;pushf ; pop %0&quot;</span>
<a name="22" /><span class="True">      22:</span>              <span class="f">:</span> <span class="e">&quot;=rm&quot;</span> <span class="f">(</span><span class="b">flags</span><span class="f">)</span>
<a name="23" /><span class="True">      23:</span>              <span class="f">:</span> <span class="k">/* no input */</span>
<a name="24" /><span class="True">      24:</span>              <span class="f">:</span> <span class="e">&quot;memory&quot;</span><span class="f">)</span><span class="f">;</span>
<a name="25" /><span class="True">      25:</span> 
<a name="26" /><span class="True">      26:</span>     <span class="m">return</span> <span class="b">flags</span><span class="f">;</span>
<a name="27" /><span class="True">      27:</span> <span class="f">}</span>
<a name="28" /><span class="True">      28:</span> 
<a name="29" /><span class="True">      29:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">native_restore_fl</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">)</span>
<a name="30" /><span class="True">      30:</span> <span class="f">{</span>
<a name="31" /><span class="True">      31:</span>     <span class="m">asm</span> <span class="m">volatile</span><span class="f">(</span><span class="e">&quot;push %0 ; popf&quot;</span>
<a name="32" /><span class="True">      32:</span>              <span class="f">:</span> <span class="k">/* no output */</span>
<a name="33" /><span class="True">      33:</span>              <span class="f">:</span><span class="e">&quot;g&quot;</span> <span class="f">(</span><span class="b">flags</span><span class="f">)</span>
<a name="34" /><span class="True">      34:</span>              <span class="f">:</span><span class="e">&quot;memory&quot;</span><span class="f">,</span> <span class="e">&quot;cc&quot;</span><span class="f">)</span><span class="f">;</span>
<a name="35" /><span class="True">      35:</span> <span class="f">}</span>
<a name="36" /><span class="True">      36:</span> 
<a name="37" /><span class="True">      37:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">native_irq_disable</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="38" /><span class="True">      38:</span> <span class="f">{</span>
<a name="39" /><span class="True">      39:</span>     <span class="m">asm</span> <span class="m">volatile</span><span class="f">(</span><span class="e">&quot;cli&quot;</span><span class="f">:</span> <span class="f">:</span> <span class="f">:</span><span class="e">&quot;memory&quot;</span><span class="f">)</span><span class="f">;</span>
<a name="40" /><span class="True">      40:</span> <span class="f">}</span>
<a name="41" /><span class="True">      41:</span> 
<a name="42" /><span class="True">      42:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">native_irq_enable</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="43" /><span class="True">      43:</span> <span class="f">{</span>
<a name="44" /><span class="True">      44:</span>     <span class="m">asm</span> <span class="m">volatile</span><span class="f">(</span><span class="e">&quot;sti&quot;</span><span class="f">:</span> <span class="f">:</span> <span class="f">:</span><span class="e">&quot;memory&quot;</span><span class="f">)</span><span class="f">;</span>
<a name="45" /><span class="True">      45:</span> <span class="f">}</span>
<a name="46" /><span class="True">      46:</span> 
<a name="47" /><span class="True">      47:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">native_safe_halt</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="48" /><span class="True">      48:</span> <span class="f">{</span>
<a name="49" /><span class="True">      49:</span>     <span class="m">asm</span> <span class="m">volatile</span><span class="f">(</span><span class="e">&quot;sti; hlt&quot;</span><span class="f">:</span> <span class="f">:</span> <span class="f">:</span><span class="e">&quot;memory&quot;</span><span class="f">)</span><span class="f">;</span>
<a name="50" /><span class="True">      50:</span> <span class="f">}</span>
<a name="51" /><span class="True">      51:</span> 
<a name="52" /><span class="True">      52:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">native_halt</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="53" /><span class="True">      53:</span> <span class="f">{</span>
<a name="54" /><span class="True">      54:</span>     <span class="m">asm</span> <span class="m">volatile</span><span class="f">(</span><span class="e">&quot;hlt&quot;</span><span class="f">:</span> <span class="f">:</span> <span class="f">:</span><span class="e">&quot;memory&quot;</span><span class="f">)</span><span class="f">;</span>
<a name="55" /><span class="True">      55:</span> <span class="f">}</span>
<a name="56" /><span class="True">      56:</span> 
<a name="57" /><span class="True">      57:</span> <span class="f">#</span><span class="n">endif</span>
<a name="58" /><span class="True">      58:</span> 
<a name="59" /><span class="False">      59:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_PARAVIRT</span>
<a name="60" /><span class="False">      60:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="m">asm</span><span class="f">/</span><span class="b">paravirt</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="61" /><span class="True">      61:</span> <span class="f">#</span><span class="n">else</span>
<a name="62" /><span class="True">      62:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">__ASSEMBLY__</span>
<a name="63" /><span class="True">      63:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="64" /><span class="True">      64:</span> 
<a name="65" /><span class="True">      65:</span> <span class="m">static</span> <span class="m">inline</span> <a href="cpu.c_macros_ref.html#_bm90cmFjZV8x"><span class="b">notrace</span></a> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">arch_local_save_flags</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="66" /><span class="True">      66:</span> <span class="f">{</span>
<a name="67" /><span class="True">      67:</span>     <span class="m">return</span> <span class="b">native_save_fl</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="68" /><span class="True">      68:</span> <span class="f">}</span>
<a name="69" /><span class="True">      69:</span> 
<a name="70" /><span class="True">      70:</span> <span class="m">static</span> <span class="m">inline</span> <a href="cpu.c_macros_ref.html#_bm90cmFjZV8x"><span class="b">notrace</span></a> <span class="m">void</span> <span class="b">arch_local_irq_restore</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">)</span>
<a name="71" /><span class="True">      71:</span> <span class="f">{</span>
<a name="72" /><span class="True">      72:</span>     <span class="b">native_restore_fl</span><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="73" /><span class="True">      73:</span> <span class="f">}</span>
<a name="74" /><span class="True">      74:</span> 
<a name="75" /><span class="True">      75:</span> <span class="m">static</span> <span class="m">inline</span> <a href="cpu.c_macros_ref.html#_bm90cmFjZV8x"><span class="b">notrace</span></a> <span class="m">void</span> <span class="b">arch_local_irq_disable</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="76" /><span class="True">      76:</span> <span class="f">{</span>
<a name="77" /><span class="True">      77:</span>     <span class="b">native_irq_disable</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="78" /><span class="True">      78:</span> <span class="f">}</span>
<a name="79" /><span class="True">      79:</span> 
<a name="80" /><span class="True">      80:</span> <span class="m">static</span> <span class="m">inline</span> <a href="cpu.c_macros_ref.html#_bm90cmFjZV8x"><span class="b">notrace</span></a> <span class="m">void</span> <span class="b">arch_local_irq_enable</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="81" /><span class="True">      81:</span> <span class="f">{</span>
<a name="82" /><span class="True">      82:</span>     <span class="b">native_irq_enable</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="83" /><span class="True">      83:</span> <span class="f">}</span>
<a name="84" /><span class="True">      84:</span> 
<a name="85" /><span class="True">      85:</span> <span class="k">/*</span>
<a name="86" /><span class="True">      86:</span> <span class="k"> * Used in the idle loop; sti takes one instruction cycle</span>
<a name="87" /><span class="True">      87:</span> <span class="k"> * to complete:</span>
<a name="88" /><span class="True">      88:</span> <span class="k"> */</span>
<a name="89" /><span class="True">      89:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">arch_safe_halt</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="90" /><span class="True">      90:</span> <span class="f">{</span>
<a name="91" /><span class="True">      91:</span>     <span class="b">native_safe_halt</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="92" /><span class="True">      92:</span> <span class="f">}</span>
<a name="93" /><span class="True">      93:</span> 
<a name="94" /><span class="True">      94:</span> <span class="k">/*</span>
<a name="95" /><span class="True">      95:</span> <span class="k"> * Used when interrupts are already enabled or to</span>
<a name="96" /><span class="True">      96:</span> <span class="k"> * shutdown the processor:</span>
<a name="97" /><span class="True">      97:</span> <span class="k"> */</span>
<a name="98" /><span class="True">      98:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">halt</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="99" /><span class="True">      99:</span> <span class="f">{</span>
<a name="100" /><span class="True">     100:</span>     <span class="b">native_halt</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="101" /><span class="True">     101:</span> <span class="f">}</span>
<a name="102" /><span class="True">     102:</span> 
<a name="103" /><span class="True">     103:</span> <span class="k">/*</span>
<a name="104" /><span class="True">     104:</span> <span class="k"> * For spinlocks, etc:</span>
<a name="105" /><span class="True">     105:</span> <span class="k"> */</span>
<a name="106" /><span class="True">     106:</span> <span class="m">static</span> <span class="m">inline</span> <a href="cpu.c_macros_ref.html#_bm90cmFjZV8x"><span class="b">notrace</span></a> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">arch_local_irq_save</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="107" /><span class="True">     107:</span> <span class="f">{</span>
<a name="108" /><span class="True">     108:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span> <span class="f">=</span> <span class="b">arch_local_save_flags</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="109" /><span class="True">     109:</span>     <span class="b">arch_local_irq_disable</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="110" /><span class="True">     110:</span>     <span class="m">return</span> <span class="b">flags</span><span class="f">;</span>
<a name="111" /><span class="True">     111:</span> <span class="f">}</span>
<a name="112" /><span class="False">     112:</span> <span class="f">#</span><span class="n">else</span>
<a name="113" /><span class="False">     113:</span> 
<a name="114" /><span class="False">     114:</span> <span class="f">#</span><span class="n">define</span> <span class="b">ENABLE_INTERRUPTS</span><span class="f">(</span><span class="b">x</span><span class="f">)</span>    <span class="b">sti</span>
<a name="115" /><span class="False">     115:</span> <span class="f">#</span><span class="n">define</span> <span class="b">DISABLE_INTERRUPTS</span><span class="f">(</span><span class="b">x</span><span class="f">)</span>    <span class="b">cli</span>
<a name="116" /><span class="False">     116:</span> 
<a name="117" /><span class="False">     117:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1g4Nl82NF8w"><span class="b">CONFIG_X86_64</span></a>
<a name="118" /><span class="False">     118:</span> <span class="f">#</span><span class="n">define</span> <span class="b">SWAPGS</span>    <span class="b">swapgs</span>
<a name="119" /><span class="False">     119:</span> <span class="k">/*</span>
<a name="120" /><span class="False">     120:</span> <span class="k"> * Currently paravirt can&apos;t handle swapgs nicely when we</span>
<a name="121" /><span class="False">     121:</span> <span class="k"> * don&apos;t have a stack we can rely on (such as a user space</span>
<a name="122" /><span class="False">     122:</span> <span class="k"> * stack).  So we either find a way around these or just fault</span>
<a name="123" /><span class="False">     123:</span> <span class="k"> * and emulate if a guest tries to call swapgs directly.</span>
<a name="124" /><span class="False">     124:</span> <span class="k"> *</span>
<a name="125" /><span class="False">     125:</span> <span class="k"> * Either way, this is a good way to document that we don&apos;t</span>
<a name="126" /><span class="False">     126:</span> <span class="k"> * have a reliable stack. x86_64 only.</span>
<a name="127" /><span class="False">     127:</span> <span class="k"> */</span>
<a name="128" /><span class="False">     128:</span> <span class="f">#</span><span class="n">define</span> <span class="b">SWAPGS_UNSAFE_STACK</span>    <span class="b">swapgs</span>
<a name="129" /><span class="False">     129:</span> 
<a name="130" /><span class="False">     130:</span> <span class="f">#</span><span class="n">define</span> <span class="b">PARAVIRT_ADJUST_EXCEPTION_FRAME</span>    <span class="k">/*  */</span>
<a name="131" /><span class="False">     131:</span> 
<a name="132" /><span class="False">     132:</span> <span class="f">#</span><span class="n">define</span> <span class="b">INTERRUPT_RETURN</span>    <span class="b">iretq</span>
<a name="133" /><span class="False">     133:</span> <span class="f">#</span><span class="n">define</span> <span class="b">USERGS_SYSRET64</span>                \
<a name="134" /><span class="False">     134:</span>     <span class="b">swapgs</span><span class="f">;</span>                    \
<a name="135" /><span class="False">     135:</span>     <span class="b">sysretq</span><span class="f">;</span>
<a name="136" /><span class="False">     136:</span> <span class="f">#</span><span class="n">define</span> <span class="b">USERGS_SYSRET32</span>                \
<a name="137" /><span class="False">     137:</span>     <span class="b">swapgs</span><span class="f">;</span>                    \
<a name="138" /><span class="False">     138:</span>     <span class="b">sysretl</span>
<a name="139" /><span class="False">     139:</span> <span class="f">#</span><span class="n">define</span> <span class="b">ENABLE_INTERRUPTS_SYSEXIT32</span>        \
<a name="140" /><span class="False">     140:</span>     <span class="b">swapgs</span><span class="f">;</span>                    \
<a name="141" /><span class="False">     141:</span>     <span class="b">sti</span><span class="f">;</span>                    \
<a name="142" /><span class="False">     142:</span>     <span class="b">sysexit</span>
<a name="143" /><span class="False">     143:</span> 
<a name="144" /><span class="False">     144:</span> <span class="f">#</span><span class="n">else</span>
<a name="145" /><span class="False">     145:</span> <span class="f">#</span><span class="n">define</span> <span class="b">INTERRUPT_RETURN</span>        <span class="b">iret</span>
<a name="146" /><span class="False">     146:</span> <span class="f">#</span><span class="n">define</span> <span class="b">ENABLE_INTERRUPTS_SYSEXIT</span>    <span class="b">sti</span><span class="f">;</span> <span class="b">sysexit</span>
<a name="147" /><span class="False">     147:</span> <span class="f">#</span><span class="n">define</span> <span class="b">GET_CR0_INTO_EAX</span>        <span class="b">movl</span> <span class="f">%</span><span class="b">cr0</span><span class="f">,</span> <span class="f">%</span><span class="b">eax</span>
<a name="148" /><span class="False">     148:</span> <span class="f">#</span><span class="n">endif</span>
<a name="149" /><span class="False">     149:</span> 
<a name="150" /><span class="False">     150:</span> 
<a name="151" /><span class="True">     151:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __ASSEMBLY__ */</span>
<a name="152" /><span class="True">     152:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* CONFIG_PARAVIRT */</span>
<a name="153" /><span class="True">     153:</span> 
<a name="154" /><span class="True">     154:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">__ASSEMBLY__</span>
<a name="155" /><span class="True">     155:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">arch_irqs_disabled_flags</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span><span class="f">)</span>
<a name="156" /><span class="True">     156:</span> <span class="f">{</span>
<a name="157" /><span class="True">     157:</span>     <span class="m">return</span> <span class="f">!</span><span class="f">(</span><span class="b">flags</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_WDg2X0VGTEFHU19JRl8w"><span class="b">X86_EFLAGS_IF</span></a><span class="f">)</span><span class="f">;</span>
<a name="158" /><span class="True">     158:</span> <span class="f">}</span>
<a name="159" /><span class="True">     159:</span> 
<a name="160" /><span class="True">     160:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">arch_irqs_disabled</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="161" /><span class="True">     161:</span> <span class="f">{</span>
<a name="162" /><span class="True">     162:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">flags</span> <span class="f">=</span> <span class="b">arch_local_save_flags</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="163" /><span class="True">     163:</span> 
<a name="164" /><span class="True">     164:</span>     <span class="m">return</span> <span class="b">arch_irqs_disabled_flags</span><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="165" /><span class="True">     165:</span> <span class="f">}</span>
<a name="166" /><span class="True">     166:</span> 
<a name="167" /><span class="False">     167:</span> <span class="f">#</span><span class="n">else</span>
<a name="168" /><span class="False">     168:</span> 
<a name="169" /><span class="False">     169:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1g4Nl82NF8w"><span class="b">CONFIG_X86_64</span></a>
<a name="170" /><span class="False">     170:</span> <span class="f">#</span><span class="n">define</span> <span class="b">ARCH_LOCKDEP_SYS_EXIT</span>        <span class="b">call</span> <span class="b">lockdep_sys_exit_thunk</span>
<a name="171" /><span class="False">     171:</span> <span class="f">#</span><span class="n">define</span> <span class="b">ARCH_LOCKDEP_SYS_EXIT_IRQ</span>    \
<a name="172" /><span class="False">     172:</span>     <span class="b">TRACE_IRQS_ON</span><span class="f">;</span> \
<a name="173" /><span class="False">     173:</span>     <span class="b">sti</span><span class="f">;</span> \
<a name="174" /><span class="False">     174:</span>     <span class="b">SAVE_REST</span><span class="f">;</span> \
<a name="175" /><span class="False">     175:</span>     <span class="b">LOCKDEP_SYS_EXIT</span><span class="f">;</span> \
<a name="176" /><span class="False">     176:</span>     <span class="b">RESTORE_REST</span><span class="f">;</span> \
<a name="177" /><span class="False">     177:</span>     <span class="b">cli</span><span class="f">;</span> \
<a name="178" /><span class="False">     178:</span>     <span class="b">TRACE_IRQS_OFF</span><span class="f">;</span>
<a name="179" /><span class="False">     179:</span> 
<a name="180" /><span class="False">     180:</span> <span class="f">#</span><span class="n">else</span>
<a name="181" /><span class="False">     181:</span> <span class="f">#</span><span class="n">define</span> <span class="b">ARCH_LOCKDEP_SYS_EXIT</span>            \
<a name="182" /><span class="False">     182:</span>     <span class="b">pushl</span> <span class="f">%</span><span class="b">eax</span><span class="f">;</span>                \
<a name="183" /><span class="False">     183:</span>     <span class="b">pushl</span> <span class="f">%</span><span class="b">ecx</span><span class="f">;</span>                \
<a name="184" /><span class="False">     184:</span>     <span class="b">pushl</span> <span class="f">%</span><span class="b">edx</span><span class="f">;</span>                \
<a name="185" /><span class="False">     185:</span>     <span class="b">call</span> <a href="cpu.c_macros_noref.html#_bG9ja2RlcF9zeXNfZXhpdF8w"><span class="b">lockdep_sys_exit</span></a><span class="f">;</span>            \
<a name="186" /><span class="False">     186:</span>     <span class="b">popl</span> <span class="f">%</span><span class="b">edx</span><span class="f">;</span>                \
<a name="187" /><span class="False">     187:</span>     <span class="b">popl</span> <span class="f">%</span><span class="b">ecx</span><span class="f">;</span>                \
<a name="188" /><span class="False">     188:</span>     <span class="b">popl</span> <span class="f">%</span><span class="b">eax</span><span class="f">;</span>
<a name="189" /><span class="False">     189:</span> 
<a name="190" /><span class="False">     190:</span> <span class="f">#</span><span class="n">define</span> <span class="b">ARCH_LOCKDEP_SYS_EXIT_IRQ</span>
<a name="191" /><span class="False">     191:</span> <span class="f">#</span><span class="n">endif</span>
<a name="192" /><span class="False">     192:</span> 
<a name="193" /><span class="False">     193:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_TRACE_IRQFLAGS</span>
<a name="194" /><span class="False">     194:</span> <span class="f">#</span>  <span class="n">define</span> <span class="b">TRACE_IRQS_ON</span>        <span class="b">call</span> <span class="b">trace_hardirqs_on_thunk</span><span class="f">;</span>
<a name="195" /><span class="False">     195:</span> <span class="f">#</span>  <span class="n">define</span> <span class="b">TRACE_IRQS_OFF</span>    <span class="b">call</span> <span class="b">trace_hardirqs_off_thunk</span><span class="f">;</span>
<a name="196" /><span class="False">     196:</span> <span class="f">#</span><span class="n">else</span>
<a name="197" /><span class="False">     197:</span> <span class="f">#</span>  <span class="n">define</span> <span class="b">TRACE_IRQS_ON</span>
<a name="198" /><span class="False">     198:</span> <span class="f">#</span>  <span class="n">define</span> <span class="b">TRACE_IRQS_OFF</span>
<a name="199" /><span class="False">     199:</span> <span class="f">#</span><span class="n">endif</span>
<a name="200" /><span class="False">     200:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_DEBUG_LOCK_ALLOC</span>
<a name="201" /><span class="False">     201:</span> <span class="f">#</span>  <span class="n">define</span> <span class="b">LOCKDEP_SYS_EXIT</span>    <span class="b">ARCH_LOCKDEP_SYS_EXIT</span>
<a name="202" /><span class="False">     202:</span> <span class="f">#</span>  <span class="n">define</span> <span class="b">LOCKDEP_SYS_EXIT_IRQ</span>    <span class="b">ARCH_LOCKDEP_SYS_EXIT_IRQ</span>
<a name="203" /><span class="False">     203:</span> <span class="f">#</span> <span class="n">else</span>
<a name="204" /><span class="False">     204:</span> <span class="f">#</span>  <span class="n">define</span> <span class="b">LOCKDEP_SYS_EXIT</span>
<a name="205" /><span class="False">     205:</span> <span class="f">#</span>  <span class="n">define</span> <span class="b">LOCKDEP_SYS_EXIT_IRQ</span>
<a name="206" /><span class="False">     206:</span> <span class="f">#</span> <span class="n">endif</span>
<a name="207" /><span class="False">     207:</span> 
<a name="208" /><span class="True">     208:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __ASSEMBLY__ */</span>
<a name="209" /><span class="True">     209:</span> <span class="f">#</span><span class="n">endif</span>
<a name="210" /><span class="True">     210:</span> </pre>
  </body>
</html>
